﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using l1cs.server.utils;
using l1cs.server;

namespace l1cs
{
    public class Config
    {
        private static Logger _log = Logger.getLogger( typeof( Config ).FullName );

        /** Debug/release mode */
        public const bool DEBUG = false;

        /** Thread pools size */
        public static int THREAD_P_EFFECTS;

        public static int THREAD_P_GENERAL;

        public static int AI_MAX_THREAD;

        public static int THREAD_P_TYPE_GENERAL;

        public static int THREAD_P_SIZE_GENERAL;

        /** Server control */
        public static String GAME_SERVER_HOST_NAME;

        public static int GAME_SERVER_PORT;

        //public static String DB_DRIVER;

        //public static String DB_URL;

        public static String DB_NAME;

        public static String DB_HOST;

        public static String DB_LOGIN;

        public static String DB_PASSWORD;

        public static String TIME_ZONE;

        public static int CLIENT_LANGUAGE;

        public static String CLIENT_LANGUAGE_CODE;

        public static String[] LANGUAGE_CODE_ARRAY = { "UTF8", "EUCKR", "UTF8", "BIG5", "SJIS", "GBK" };

        public static bool HOSTNAME_LOOKUPS;

        public static int AUTOMATIC_KICK;

        public static bool AUTO_CREATE_ACCOUNTS;

        public static short MAX_ONLINE_USERS;

        public static bool CACHE_MAP_FILES;

        public static bool LOAD_V2_MAP_FILES;

        public static bool CHECK_MOVE_INTERVAL;

        public static bool CHECK_ATTACK_INTERVAL;

        public static bool CHECK_SPELL_INTERVAL;

        public static short INJUSTICE_COUNT;

        public static int JUSTICE_COUNT;

        public static int CHECK_STRICTNESS;

        public static byte LOGGING_WEAPON_ENCHANT;

        public static byte LOGGING_ARMOR_ENCHANT;

        public static bool LOGGING_CHAT_NORMAL;

        public static bool LOGGING_CHAT_WHISPER;

        public static bool LOGGING_CHAT_SHOUT;

        public static bool LOGGING_CHAT_WORLD;

        public static bool LOGGING_CHAT_CLAN;

        public static bool LOGGING_CHAT_PARTY;

        public static bool LOGGING_CHAT_COMBINED;

        public static bool LOGGING_CHAT_CHAT_PARTY;

        public static int AUTOSAVE_INTERVAL;

        public static int AUTOSAVE_INTERVAL_INVENTORY;

        public static int SKILLTIMER_IMPLTYPE;

        public static int NPCAI_IMPLTYPE;

        public static bool TELNET_SERVER;

        public static int TELNET_SERVER_PORT;

        public static int PC_RECOGNIZE_RANGE;

        public static bool CHARACTER_CONFIG_IN_SERVER_SIDE;

        public static bool ALLOW_2PC;

        public static int LEVEL_DOWN_RANGE;

        public static bool SEND_PACKET_BEFORE_TELEPORT;

        public static bool DETECT_DB_RESOURCE_LEAKS;

        /** Rate control */
        public static double RATE_XP;

        public static double RATE_LA;

        public static double RATE_KARMA;

        public static double RATE_DROP_ADENA;

        public static double RATE_DROP_ITEMS;

        public static int ENCHANT_CHANCE_WEAPON;

        public static int ENCHANT_CHANCE_ARMOR;

        public static int ATTR_ENCHANT_CHANCE;

        public static double RATE_WEIGHT_LIMIT;

        public static double RATE_WEIGHT_LIMIT_PET;

        public static double RATE_SHOP_SELLING_PRICE;

        public static double RATE_SHOP_PURCHASING_PRICE;

        public static int CREATE_CHANCE_DIARY;

        public static int CREATE_CHANCE_RECOLLECTION;

        public static int CREATE_CHANCE_MYSTERIOUS;

        public static int CREATE_CHANCE_PROCESSING;

        public static int CREATE_CHANCE_PROCESSING_DIAMOND;

        public static int CREATE_CHANCE_DANTES;

        public static int CREATE_CHANCE_ANCIENT_AMULET;

        public static int CREATE_CHANCE_HISTORY_BOOK;

        /** AltSettings control */
        public static short GLOBAL_CHAT_LEVEL;

        public static short WHISPER_CHAT_LEVEL;

        public static byte AUTO_LOOT;

        public static int LOOTING_RANGE;

        public static bool ALT_NONPVP;

        public static bool ALT_ATKMSG;

        public static bool CHANGE_TITLE_BY_ONESELF;

        public static int MAX_CLAN_MEMBER;

        public static bool CLAN_ALLIANCE;

        public static int MAX_PT;

        public static int MAX_CHAT_PT;

        public static bool SIM_WAR_PENALTY;

        public static bool GET_BACK;

        public static String ALT_ITEM_DELETION_TYPE;

        public static int ALT_ITEM_DELETION_TIME;

        public static int ALT_ITEM_DELETION_RANGE;

        public static bool ALT_GMSHOP;

        public static int ALT_GMSHOP_MIN_ID;

        public static int ALT_GMSHOP_MAX_ID;

        public static bool ALT_HALLOWEENIVENT;

        public static bool ALT_JPPRIVILEGED;

        public static bool ALT_TALKINGSCROLLQUEST;

        public static bool ALT_WHO_COMMAND;

        public static bool ALT_REVIVAL_POTION;

        public static int ALT_WAR_TIME;

        public static string ALT_WAR_TIME_UNIT;

        public static int ALT_WAR_INTERVAL;

        public static string ALT_WAR_INTERVAL_UNIT;

        public static int ALT_RATE_OF_DUTY;

        public static bool SPAWN_HOME_POINT;

        public static int SPAWN_HOME_POINT_RANGE;

        public static int SPAWN_HOME_POINT_COUNT;

        public static int SPAWN_HOME_POINT_DELAY;

        public static bool INIT_BOSS_SPAWN;

        public static int ELEMENTAL_STONE_AMOUNT;

        public static int HOUSE_TAX_INTERVAL;

        public static int MAX_DOLL_COUNT;

        public static bool RETURN_TO_NATURE;

        public static int MAX_NPC_ITEM;

        public static int MAX_PERSONAL_WAREHOUSE_ITEM;

        public static int MAX_CLAN_WAREHOUSE_ITEM;

        public static bool DELETE_CHARACTER_AFTER_7DAYS;

        public static int NPC_DELETION_TIME;

        public static int DEFAULT_CHARACTER_SLOT;

        /** CharSettings control */
        public static int PRINCE_MAX_HP;

        public static int PRINCE_MAX_MP;

        public static int KNIGHT_MAX_HP;

        public static int KNIGHT_MAX_MP;

        public static int ELF_MAX_HP;

        public static int ELF_MAX_MP;

        public static int WIZARD_MAX_HP;

        public static int WIZARD_MAX_MP;

        public static int DARKELF_MAX_HP;

        public static int DARKELF_MAX_MP;

        public static int DRAGONKNIGHT_MAX_HP;

        public static int DRAGONKNIGHT_MAX_MP;

        public static int ILLUSIONIST_MAX_HP;

        public static int ILLUSIONIST_MAX_MP;

        public static int LV50_EXP;

        public static int LV51_EXP;

        public static int LV52_EXP;

        public static int LV53_EXP;

        public static int LV54_EXP;

        public static int LV55_EXP;

        public static int LV56_EXP;

        public static int LV57_EXP;

        public static int LV58_EXP;

        public static int LV59_EXP;

        public static int LV60_EXP;

        public static int LV61_EXP;

        public static int LV62_EXP;

        public static int LV63_EXP;

        public static int LV64_EXP;

        public static int LV65_EXP;

        public static int LV66_EXP;

        public static int LV67_EXP;

        public static int LV68_EXP;

        public static int LV69_EXP;

        public static int LV70_EXP;

        public static int LV71_EXP;

        public static int LV72_EXP;

        public static int LV73_EXP;

        public static int LV74_EXP;

        public static int LV75_EXP;

        public static int LV76_EXP;

        public static int LV77_EXP;

        public static int LV78_EXP;

        public static int LV79_EXP;

        public static int LV80_EXP;

        public static int LV81_EXP;

        public static int LV82_EXP;

        public static int LV83_EXP;

        public static int LV84_EXP;

        public static int LV85_EXP;

        public static int LV86_EXP;

        public static int LV87_EXP;

        public static int LV88_EXP;

        public static int LV89_EXP;

        public static int LV90_EXP;

        public static int LV91_EXP;

        public static int LV92_EXP;

        public static int LV93_EXP;

        public static int LV94_EXP;

        public static int LV95_EXP;

        public static int LV96_EXP;

        public static int LV97_EXP;

        public static int LV98_EXP;

        public static int LV99_EXP;

        /** Configuration files */
        public const String SERVER_CONFIG_FILE = "./config/server.properties";

        public const String RATES_CONFIG_FILE = "./config/rates.properties";

        public const String ALT_SETTINGS_FILE = "./config/altsettings.properties";

        public const String CHAR_SETTINGS_CONFIG_FILE = "./config/charsettings.properties";

        /** その他の設定 */

        // NPCから吸えるMP限界
        public const int MANA_DRAIN_LIMIT_PER_NPC = 40;

        // 一回の攻撃で吸えるMP限界(SOM、鋼鉄SOM）
        public const int MANA_DRAIN_LIMIT_PER_SOM_ATTACK = 9;

        public static byte[] FIRST_PACKET;

        public static int FIRST_PACKET_LEN;

        public static long SEED;

        public static void load()
        {
            _log.info( "loading gameserver config" );
            // server.properties
            Properties_java serverSettings = new Properties_java( SERVER_CONFIG_FILE );
            GAME_SERVER_HOST_NAME = serverSettings.getProperty( "GameserverHostname", "*" );
            GAME_SERVER_PORT = serverSettings.getPropertyInt( "GameserverPort", "2000" );
            //DB_DRIVER = serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
            //DB_URL = serverSettings.getProperty("URL", "jdbc:mysql://localhost/l1jdb?useUnicode=true&characterEncoding=sjis");
            DB_HOST = serverSettings.getProperty( "HostName", "localhost" );
            DB_NAME = serverSettings.getProperty( "DataBase", "l1jdb" );
            DB_LOGIN = serverSettings.getProperty( "Login", "root" );
            DB_PASSWORD = serverSettings.getProperty( "Password", "" );
            THREAD_P_TYPE_GENERAL = serverSettings.getPropertyInt( "GeneralThreadPoolType", "0" );
            THREAD_P_SIZE_GENERAL = serverSettings.getPropertyInt( "GeneralThreadPoolSize", "0" );
            CLIENT_LANGUAGE = serverSettings.getPropertyInt( "ClientLanguage", "4" );
            CLIENT_LANGUAGE_CODE = LANGUAGE_CODE_ARRAY[CLIENT_LANGUAGE];
            TIME_ZONE = serverSettings.getProperty( "TimeZone", "JST" );
            HOSTNAME_LOOKUPS = serverSettings.getPropertyBool( "HostnameLookups", "false" );
            AUTOMATIC_KICK = serverSettings.getPropertyInt( "AutomaticKick", "10" );
            AUTO_CREATE_ACCOUNTS = serverSettings.getPropertyBool( "AutoCreateAccounts", "true" );
            MAX_ONLINE_USERS = serverSettings.getPropertyShort( "MaximumOnlineUsers", "30" );
            CACHE_MAP_FILES = serverSettings.getPropertyBool( "CacheMapFiles", "false" );
            LOAD_V2_MAP_FILES = serverSettings.getPropertyBool( "LoadV2MapFiles", "false" );
            CHECK_MOVE_INTERVAL = serverSettings.getPropertyBool( "CheckMoveInterval", "false" );
            CHECK_ATTACK_INTERVAL = serverSettings.getPropertyBool( "CheckAttackInterval", "false" );
            CHECK_SPELL_INTERVAL = serverSettings.getPropertyBool( "CheckSpellInterval", "false" );
            INJUSTICE_COUNT = serverSettings.getPropertyShort( "InjusticeCount", "10" );
            JUSTICE_COUNT = serverSettings.getPropertyInt( "JusticeCount", "4" );
            CHECK_STRICTNESS = serverSettings.getPropertyInt( "CheckStrictness", "102" );
            LOGGING_WEAPON_ENCHANT = serverSettings.getPropertyByte( "LoggingWeaponEnchant", "0" );
            LOGGING_ARMOR_ENCHANT = serverSettings.getPropertyByte( "LoggingArmorEnchant", "0" );
            LOGGING_CHAT_NORMAL = serverSettings.getPropertyBool( "LoggingChatNormal", "false" );
            LOGGING_CHAT_WHISPER = serverSettings.getPropertyBool( "LoggingChatWhisper", "false" );
            LOGGING_CHAT_SHOUT = serverSettings.getPropertyBool( "LoggingChatShout", "false" );
            LOGGING_CHAT_WORLD = serverSettings.getPropertyBool( "LoggingChatWorld", "false" );
            LOGGING_CHAT_CLAN = serverSettings.getPropertyBool( "LoggingChatClan", "false" );
            LOGGING_CHAT_PARTY = serverSettings.getPropertyBool( "LoggingChatParty", "false" );
            LOGGING_CHAT_COMBINED = serverSettings.getPropertyBool( "LoggingChatCombined", "false" );
            LOGGING_CHAT_CHAT_PARTY = serverSettings.getPropertyBool( "LoggingChatChatParty", "false" );
            AUTOSAVE_INTERVAL = serverSettings.getPropertyInt( "AutosaveInterval", "1200" );
            AUTOSAVE_INTERVAL_INVENTORY = serverSettings.getPropertyInt( "AutosaveIntervalOfInventory", "300" );
            SKILLTIMER_IMPLTYPE = serverSettings.getPropertyInt( "SkillTimerImplType", "1" );
            NPCAI_IMPLTYPE = serverSettings.getPropertyInt( "NpcAIImplType", "1" );
            TELNET_SERVER = serverSettings.getPropertyBool( "TelnetServer", "false" );
            TELNET_SERVER_PORT = serverSettings.getPropertyInt( "TelnetServerPort", "23" );
            PC_RECOGNIZE_RANGE = serverSettings.getPropertyInt( "PcRecognizeRange", "20" );
            CHARACTER_CONFIG_IN_SERVER_SIDE = serverSettings.getPropertyBool( "CharacterConfigInServerSide", "true" );
            ALLOW_2PC = serverSettings.getPropertyBool( "Allow2PC", "true" );
            LEVEL_DOWN_RANGE = serverSettings.getPropertyInt( "LevelDownRange", "0" );
            SEND_PACKET_BEFORE_TELEPORT = serverSettings.getPropertyBool( "SendPacketBeforeTeleport", "false" );
            DETECT_DB_RESOURCE_LEAKS = serverSettings.getPropertyBool( "EnableDatabaseResourceLeaksDetection", "false" );
            string version = serverSettings.getProperty( "version", "3.0" );
            if ( version == "3.0" )
            {
                FIRST_PACKET_LEN = 0x12;

                FIRST_PACKET = new byte[FIRST_PACKET_LEN];
                FIRST_PACKET[0] = (byte)FIRST_PACKET_LEN;
                FIRST_PACKET[1] = (byte)( FIRST_PACKET_LEN >> 8 & 0xFF );
                FIRST_PACKET[2] = 0x7d;
                FIRST_PACKET[3] = 0xfa;
                FIRST_PACKET[4] = 0xbd;
                FIRST_PACKET[5] = 0x98;
                FIRST_PACKET[6] = 0x7c;
                FIRST_PACKET[7] = 0xec;
                FIRST_PACKET[8] = 0x64;
                FIRST_PACKET[9] = 0x3e;
                FIRST_PACKET[10] = 0x0d;
                FIRST_PACKET[11] = 0xc0;
                FIRST_PACKET[12] = 0x82;
                FIRST_PACKET[13] = 0x00;
                FIRST_PACKET[14] = 0x00;
                FIRST_PACKET[15] = 0x02;
                FIRST_PACKET[16] = 0x08;
                FIRST_PACKET[17] = 0x00;

                SEED = 0x7c98bdfa;
            }

            // rates.properties
            Properties_java rateSettings = new Properties_java( RATES_CONFIG_FILE );
            RATE_XP = rateSettings.getPropertyDouble( "RateXp", "1.0" );
            RATE_LA = rateSettings.getPropertyDouble( "RateLawful", "1.0" );
            RATE_KARMA = rateSettings.getPropertyDouble( "RateKarma", "1.0" );
            RATE_DROP_ADENA = rateSettings.getPropertyDouble( "RateDropAdena", "1.0" );
            RATE_DROP_ITEMS = rateSettings.getPropertyDouble( "RateDropItems", "1.0" );
            ENCHANT_CHANCE_WEAPON = rateSettings.getPropertyInt( "EnchantChanceWeapon", "68" );
            ENCHANT_CHANCE_ARMOR = rateSettings.getPropertyInt( "EnchantChanceArmor", "52" );
            ATTR_ENCHANT_CHANCE = rateSettings.getPropertyInt( "AttrEnchantChance", "10" );
            RATE_WEIGHT_LIMIT = rateSettings.getPropertyDouble( "RateWeightLimit", "1" );
            RATE_WEIGHT_LIMIT_PET = rateSettings.getPropertyDouble( "RateWeightLimitforPet", "1" );
            RATE_SHOP_SELLING_PRICE = rateSettings.getPropertyDouble( "RateShopSellingPrice", "1.0" );
            RATE_SHOP_PURCHASING_PRICE = rateSettings.getPropertyDouble( "RateShopPurchasingPrice", "1.0" );
            CREATE_CHANCE_DIARY = rateSettings.getPropertyInt( "CreateChanceDiary", "33" );
            CREATE_CHANCE_RECOLLECTION = rateSettings.getPropertyInt( "CreateChanceRecollection", "90" );
            CREATE_CHANCE_MYSTERIOUS = rateSettings.getPropertyInt( "CreateChanceMysterious", "90" );
            CREATE_CHANCE_PROCESSING = rateSettings.getPropertyInt( "CreateChanceProcessing", "90" );
            CREATE_CHANCE_PROCESSING_DIAMOND = rateSettings.getPropertyInt( "CreateChanceProcessingDiamond", "90" );
            CREATE_CHANCE_DANTES = rateSettings.getPropertyInt( "CreateChanceDantes", "50" );
            CREATE_CHANCE_ANCIENT_AMULET = rateSettings.getPropertyInt( "CreateChanceAncientAmulet", "90" );
            CREATE_CHANCE_HISTORY_BOOK = rateSettings.getPropertyInt( "CreateChanceHistoryBook", "50" );


            // altsettings.properties
            Properties_java altSettings = new Properties_java( ALT_SETTINGS_FILE );
            GLOBAL_CHAT_LEVEL = altSettings.getPropertyShort( "GlobalChatLevel", "30" );
            WHISPER_CHAT_LEVEL = altSettings.getPropertyShort( "WhisperChatLevel", "5" );
            AUTO_LOOT = altSettings.getPropertyByte( "AutoLoot", "2" );
            LOOTING_RANGE = altSettings.getPropertyInt( "LootingRange", "3" );
            ALT_NONPVP = altSettings.getPropertyBool( "NonPvP", "true" );
            ALT_ATKMSG = altSettings.getPropertyBool( "AttackMessageOn", "true" );
            CHANGE_TITLE_BY_ONESELF = altSettings.getPropertyBool( "ChangeTitleByOneself", "false" );
            MAX_CLAN_MEMBER = altSettings.getPropertyInt( "MaxClanMember", "0" );
            CLAN_ALLIANCE = altSettings.getPropertyBool( "ClanAlliance", "true" );
            MAX_PT = altSettings.getPropertyInt( "MaxPT", "8" );
            MAX_CHAT_PT = altSettings.getPropertyInt( "MaxChatPT", "8" );
            SIM_WAR_PENALTY = altSettings.getPropertyBool( "SimWarPenalty", "true" );
            GET_BACK = altSettings.getPropertyBool( "GetBack", "false" );
            ALT_ITEM_DELETION_TYPE = altSettings.getProperty( "ItemDeletionType", "auto" );
            ALT_ITEM_DELETION_TIME = altSettings.getPropertyInt( "ItemDeletionTime", "10" );
            ALT_ITEM_DELETION_RANGE = altSettings.getPropertyInt( "ItemDeletionRange", "5" );
            ALT_GMSHOP = altSettings.getPropertyBool( "GMshop", "false" );
            ALT_GMSHOP_MIN_ID = altSettings.getPropertyInt( "GMshopMinID", "0xffffffff" ); // 取得失敗時は無効
            ALT_GMSHOP_MAX_ID = altSettings.getPropertyInt( "GMshopMaxID", "0xffffffff" ); // 取得失敗時は無効
            ALT_HALLOWEENIVENT = altSettings.getPropertyBool( "HalloweenIvent", "true" );
            ALT_JPPRIVILEGED = altSettings.getPropertyBool( "JpPrivileged", "false" );
            ALT_TALKINGSCROLLQUEST = altSettings.getPropertyBool( "TalkingScrollQuest", "false" );
            ALT_WHO_COMMAND = altSettings.getPropertyBool( "WhoCommand", "false" );
            ALT_REVIVAL_POTION = altSettings.getPropertyBool( "RevivalPotion", "false" );
            String strWar;
            strWar = altSettings.getProperty( "WarTime", "2h" );
            if ( strWar.IndexOf( "d" ) >= 0 )
            {
                ALT_WAR_TIME_UNIT = "d";
                strWar = strWar.Replace( "d", "" );
            }
            else if ( strWar.IndexOf( "h" ) >= 0 )
            {
                ALT_WAR_TIME_UNIT = "h";
                strWar = strWar.Replace( "h", "" );
            }
            else if ( strWar.IndexOf( "m" ) >= 0 )
            {
                ALT_WAR_TIME_UNIT = "m";
                strWar = strWar.Replace( "m", "" );
            }
            ALT_WAR_TIME = Convert.ToInt32( strWar );
            strWar = altSettings.getProperty( "WarInterval", "4d" );
            if ( strWar.IndexOf( "d" ) >= 0 )
            {
                ALT_WAR_INTERVAL_UNIT = "d";
                strWar = strWar.Replace( "d", "" );
            }
            else if ( strWar.IndexOf( "h" ) >= 0 )
            {
                ALT_WAR_INTERVAL_UNIT = "h";
                strWar = strWar.Replace( "h", "" );
            }
            else if ( strWar.IndexOf( "m" ) >= 0 )
            {
                ALT_WAR_INTERVAL_UNIT = "m";
                strWar = strWar.Replace( "m", "" );
            }
            ALT_WAR_INTERVAL = int.Parse( strWar );
            SPAWN_HOME_POINT = altSettings.getPropertyBool( "SpawnHomePoint", "true" );
            SPAWN_HOME_POINT_COUNT = altSettings.getPropertyInt( "SpawnHomePointCount", "2" );
            SPAWN_HOME_POINT_DELAY = altSettings.getPropertyInt( "SpawnHomePointDelay", "100" );
            SPAWN_HOME_POINT_RANGE = altSettings.getPropertyInt( "SpawnHomePointRange", "8" );
            INIT_BOSS_SPAWN = altSettings.getPropertyBool( "InitBossSpawn", "true" );
            ELEMENTAL_STONE_AMOUNT = altSettings.getPropertyInt( "ElementalStoneAmount", "300" );
            HOUSE_TAX_INTERVAL = altSettings.getPropertyInt( "HouseTaxInterval", "10" );
            MAX_DOLL_COUNT = altSettings.getPropertyInt( "MaxDollCount", "1" );
            RETURN_TO_NATURE = altSettings.getPropertyBool( "ReturnToNature", "false" );
            MAX_NPC_ITEM = altSettings.getPropertyInt( "MaxNpcItem", "8" );
            MAX_PERSONAL_WAREHOUSE_ITEM = altSettings.getPropertyInt( "MaxPersonalWarehouseItem", "100" );
            MAX_CLAN_WAREHOUSE_ITEM = altSettings.getPropertyInt( "MaxClanWarehouseItem", "200" );
            DELETE_CHARACTER_AFTER_7DAYS = altSettings.getPropertyBool( "DeleteCharacterAfter7Days", "True" );
            NPC_DELETION_TIME = altSettings.getPropertyInt( "NpcDeletionTime", "10" );
            DEFAULT_CHARACTER_SLOT = altSettings.getPropertyInt( "DefaultCharacterSlot", "6" );


            // charsettings.properties
            Properties_java charSettings = new Properties_java( CHAR_SETTINGS_CONFIG_FILE );
            PRINCE_MAX_HP = charSettings.getPropertyInt( "PrinceMaxHP", "1000" );
            PRINCE_MAX_MP = charSettings.getPropertyInt( "PrinceMaxMP", "800" );
            KNIGHT_MAX_HP = charSettings.getPropertyInt( "KnightMaxHP", "1400" );
            KNIGHT_MAX_MP = charSettings.getPropertyInt( "KnightMaxMP", "600" );
            ELF_MAX_HP = charSettings.getPropertyInt( "ElfMaxHP", "1000" );
            ELF_MAX_MP = charSettings.getPropertyInt( "ElfMaxMP", "900" );
            WIZARD_MAX_HP = charSettings.getPropertyInt( "WizardMaxHP", "800" );
            WIZARD_MAX_MP = charSettings.getPropertyInt( "WizardMaxMP", "1200" );
            DARKELF_MAX_HP = charSettings.getPropertyInt( "DarkelfMaxHP", "1000" );
            DARKELF_MAX_MP = charSettings.getPropertyInt( "DarkelfMaxMP", "900" );
            DRAGONKNIGHT_MAX_HP = charSettings.getPropertyInt( "DragonKnightMaxHP", "1400" );
            DRAGONKNIGHT_MAX_MP = charSettings.getPropertyInt( "DragonKnightMaxMP", "600" );
            ILLUSIONIST_MAX_HP = charSettings.getPropertyInt( "IllusionistMaxHP", "900" );
            ILLUSIONIST_MAX_MP = charSettings.getPropertyInt( "IllusionistMaxMP", "1100" );
            LV50_EXP = charSettings.getPropertyInt( "Lv50Exp", "1" );
            LV51_EXP = charSettings.getPropertyInt( "Lv51Exp", "1" );
            LV52_EXP = charSettings.getPropertyInt( "Lv52Exp", "1" );
            LV53_EXP = charSettings.getPropertyInt( "Lv53Exp", "1" );
            LV54_EXP = charSettings.getPropertyInt( "Lv54Exp", "1" );
            LV55_EXP = charSettings.getPropertyInt( "Lv55Exp", "1" );
            LV56_EXP = charSettings.getPropertyInt( "Lv56Exp", "1" );
            LV57_EXP = charSettings.getPropertyInt( "Lv57Exp", "1" );
            LV58_EXP = charSettings.getPropertyInt( "Lv58Exp", "1" );
            LV59_EXP = charSettings.getPropertyInt( "Lv59Exp", "1" );
            LV60_EXP = charSettings.getPropertyInt( "Lv60Exp", "1" );
            LV61_EXP = charSettings.getPropertyInt( "Lv61Exp", "1" );
            LV62_EXP = charSettings.getPropertyInt( "Lv62Exp", "1" );
            LV63_EXP = charSettings.getPropertyInt( "Lv63Exp", "1" );
            LV64_EXP = charSettings.getPropertyInt( "Lv64Exp", "1" );
            LV65_EXP = charSettings.getPropertyInt( "Lv65Exp", "2" );
            LV66_EXP = charSettings.getPropertyInt( "Lv66Exp", "2" );
            LV67_EXP = charSettings.getPropertyInt( "Lv67Exp", "2" );
            LV68_EXP = charSettings.getPropertyInt( "Lv68Exp", "2" );
            LV69_EXP = charSettings.getPropertyInt( "Lv69Exp", "2" );
            LV70_EXP = charSettings.getPropertyInt( "Lv70Exp", "4" );
            LV71_EXP = charSettings.getPropertyInt( "Lv71Exp", "4" );
            LV72_EXP = charSettings.getPropertyInt( "Lv72Exp", "4" );
            LV73_EXP = charSettings.getPropertyInt( "Lv73Exp", "4" );
            LV74_EXP = charSettings.getPropertyInt( "Lv74Exp", "4" );
            LV75_EXP = charSettings.getPropertyInt( "Lv75Exp", "8" );
            LV76_EXP = charSettings.getPropertyInt( "Lv76Exp", "8" );
            LV77_EXP = charSettings.getPropertyInt( "Lv77Exp", "8" );
            LV78_EXP = charSettings.getPropertyInt( "Lv78Exp", "8" );
            LV79_EXP = charSettings.getPropertyInt( "Lv79Exp", "16" );
            LV80_EXP = charSettings.getPropertyInt( "Lv80Exp", "32" );
            LV81_EXP = charSettings.getPropertyInt( "Lv81Exp", "64" );
            LV82_EXP = charSettings.getPropertyInt( "Lv82Exp", "128" );
            LV83_EXP = charSettings.getPropertyInt( "Lv83Exp", "256" );
            LV84_EXP = charSettings.getPropertyInt( "Lv84Exp", "512" );
            LV85_EXP = charSettings.getPropertyInt( "Lv85Exp", "1024" );
            LV86_EXP = charSettings.getPropertyInt( "Lv86Exp", "2048" );
            LV87_EXP = charSettings.getPropertyInt( "Lv87Exp", "4096" );
            LV88_EXP = charSettings.getPropertyInt( "Lv88Exp", "8192" );
            LV89_EXP = charSettings.getPropertyInt( "Lv89Exp", "16384" );
            LV90_EXP = charSettings.getPropertyInt( "Lv90Exp", "32768" );
            LV91_EXP = charSettings.getPropertyInt( "Lv91Exp", "65536" );
            LV92_EXP = charSettings.getPropertyInt( "Lv92Exp", "131072" );
            LV93_EXP = charSettings.getPropertyInt( "Lv93Exp", "262144" );
            LV94_EXP = charSettings.getPropertyInt( "Lv94Exp", "524288" );
            LV95_EXP = charSettings.getPropertyInt( "Lv95Exp", "1048576" );
            LV96_EXP = charSettings.getPropertyInt( "Lv96Exp", "2097152" );
            LV97_EXP = charSettings.getPropertyInt( "Lv97Exp", "4194304" );
            LV98_EXP = charSettings.getPropertyInt( "Lv98Exp", "8388608" );
            LV99_EXP = charSettings.getPropertyInt( "Lv99Exp", "16777216" );
            validate();
        }

        private static void validate()
        {
            if ( !IntRange.includes( Config.ALT_ITEM_DELETION_RANGE, 0, 5 ) )
            {
                //throw new IllegalStateException("ItemDeletionRangeの値が設定可能範囲外です。");
            }

            if ( !IntRange.includes( Config.ALT_ITEM_DELETION_TIME, 1, 35791 ) )
            {
                //throw new IllegalStateException("ItemDeletionTimeの値が設定可能範囲外です。");
            }
        }

        //    public static bool setParameterValue(String pName, String pValue)
        //    {
        //        // server.properties
        //        if (pName.equalsIgnoreCase("GameserverHostname"))
        //        {
        //            GAME_SERVER_HOST_NAME = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("GameserverPort"))
        //        {
        //            GAME_SERVER_PORT = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Driver"))
        //        {
        //            DB_DRIVER = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("URL"))
        //        {
        //            DB_URL = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("Login"))
        //        {
        //            DB_LOGIN = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("Password"))
        //        {
        //            DB_PASSWORD = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("ClientLanguage"))
        //        {
        //            CLIENT_LANGUAGE = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("TimeZone"))
        //        {
        //            TIME_ZONE = pValue;
        //        }
        //        else if (pName.equalsIgnoreCase("AutomaticKick"))
        //        {
        //            AUTOMATIC_KICK = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AutoCreateAccounts"))
        //        {
        //            AUTO_CREATE_ACCOUNTS = Boolean.parseBoolean(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaximumOnlineUsers"))
        //        {
        //            MAX_ONLINE_USERS = Short.parseShort(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("LoggingWeaponEnchant"))
        //        {
        //            LOGGING_WEAPON_ENCHANT = Byte.parseByte(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("LoggingArmorEnchant"))
        //        {
        //            LOGGING_ARMOR_ENCHANT = Byte.parseByte(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("CharacterConfigInServerSide"))
        //        {
        //            CHARACTER_CONFIG_IN_SERVER_SIDE = Boolean.parseBoolean(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Allow2PC"))
        //        {
        //            ALLOW_2PC = Boolean.parseBoolean(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("LevelDownRange"))
        //        {
        //            LEVEL_DOWN_RANGE = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("SendPacketBeforeTeleport"))
        //        {
        //            SEND_PACKET_BEFORE_TELEPORT = Boolean.parseBoolean(pValue);
        //        }
        //        // rates.properties
        //        else if (pName.equalsIgnoreCase("RateXp"))
        //        {
        //            RATE_XP = Double.parseDouble(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("RateLawful"))
        //        {
        //            RATE_LA = Double.parseDouble(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("RateKarma"))
        //        {
        //            RATE_KARMA = Double.parseDouble(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("RateDropAdena"))
        //        {
        //            RATE_DROP_ADENA = Double.parseDouble(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("RateDropItems"))
        //        {
        //            RATE_DROP_ITEMS = Double.parseDouble(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("EnchantChanceWeapon"))
        //        {
        //            ENCHANT_CHANCE_WEAPON = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("EnchantChanceArmor"))
        //        {
        //            ENCHANT_CHANCE_ARMOR = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AttrEnchantChance"))
        //        {
        //            ATTR_ENCHANT_CHANCE = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Weightrate"))
        //        {
        //            RATE_WEIGHT_LIMIT = Byte.parseByte(pValue);
        //        }
        //        // altsettings.properties
        //        else if (pName.equalsIgnoreCase("GlobalChatLevel"))
        //        {
        //            GLOBAL_CHAT_LEVEL = Short.parseShort(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("WhisperChatLevel"))
        //        {
        //            WHISPER_CHAT_LEVEL = Short.parseShort(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AutoLoot"))
        //        {
        //            AUTO_LOOT = Byte.parseByte(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("LOOTING_RANGE"))
        //        {
        //            LOOTING_RANGE = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AltNonPvP"))
        //        {
        //            ALT_NONPVP = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AttackMessageOn"))
        //        {
        //            ALT_ATKMSG = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("ChangeTitleByOneself"))
        //        {
        //            CHANGE_TITLE_BY_ONESELF = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxClanMember"))
        //        {
        //            MAX_CLAN_MEMBER = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("ClanAlliance"))
        //        {
        //            CLAN_ALLIANCE = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxPT"))
        //        {
        //            MAX_PT = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxChatPT"))
        //        {
        //            MAX_CHAT_PT = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("SimWarPenalty"))
        //        {
        //            SIM_WAR_PENALTY = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("GetBack"))
        //        {
        //            GET_BACK = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AutomaticItemDeletionTime"))
        //        {
        //            ALT_ITEM_DELETION_TIME = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("AutomaticItemDeletionRange"))
        //        {
        //            ALT_ITEM_DELETION_RANGE = Byte.parseByte(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("GMshop"))
        //        {
        //            ALT_GMSHOP = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("GMshopMinID"))
        //        {
        //            ALT_GMSHOP_MIN_ID = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("GMshopMaxID"))
        //        {
        //            ALT_GMSHOP_MAX_ID = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("HalloweenIvent"))
        //        {
        //            ALT_HALLOWEENIVENT = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("JpPrivileged"))
        //        {
        //            ALT_JPPRIVILEGED = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("TalkingScrollQuest"))
        //        {
        //            ALT_TALKINGSCROLLQUEST = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("HouseTaxInterval"))
        //        {
        //            HOUSE_TAX_INTERVAL = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxDollCount"))
        //        {
        //            MAX_DOLL_COUNT = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("ReturnToNature"))
        //        {
        //            RETURN_TO_NATURE = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxNpcItem"))
        //        {
        //            MAX_NPC_ITEM = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxPersonalWarehouseItem"))
        //        {
        //            MAX_PERSONAL_WAREHOUSE_ITEM = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("MaxClanWarehouseItem"))
        //        {
        //            MAX_CLAN_WAREHOUSE_ITEM = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DeleteCharacterAfter7Days"))
        //        {
        //            DELETE_CHARACTER_AFTER_7DAYS = Boolean.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("NpcDeletionTime"))
        //        {
        //            NPC_DELETION_TIME = Integer.valueOf(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DefaultCharacterSlot"))
        //        {
        //            DEFAULT_CHARACTER_SLOT = Integer.valueOf(pValue);
        //        }
        //        // charsettings.properties
        //        else if (pName.equalsIgnoreCase("PrinceMaxHP"))
        //        {
        //            PRINCE_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("PrinceMaxMP"))
        //        {
        //            PRINCE_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("KnightMaxHP"))
        //        {
        //            KNIGHT_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("KnightMaxMP"))
        //        {
        //            KNIGHT_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("ElfMaxHP"))
        //        {
        //            ELF_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("ElfMaxMP"))
        //        {
        //            ELF_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("WizardMaxHP"))
        //        {
        //            WIZARD_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("WizardMaxMP"))
        //        {
        //            WIZARD_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DarkelfMaxHP"))
        //        {
        //            DARKELF_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DarkelfMaxMP"))
        //        {
        //            DARKELF_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DragonKnightMaxHP"))
        //        {
        //            DRAGONKNIGHT_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("DragonKnightMaxMP"))
        //        {
        //            DRAGONKNIGHT_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("IllusionistMaxHP"))
        //        {
        //            ILLUSIONIST_MAX_HP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("IllusionistMaxMP"))
        //        {
        //            ILLUSIONIST_MAX_MP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv50Exp"))
        //        {
        //            LV50_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv51Exp"))
        //        {
        //            LV51_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv52Exp"))
        //        {
        //            LV52_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv53Exp"))
        //        {
        //            LV53_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv54Exp"))
        //        {
        //            LV54_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv55Exp"))
        //        {
        //            LV55_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv56Exp"))
        //        {
        //            LV56_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv57Exp"))
        //        {
        //            LV57_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv58Exp"))
        //        {
        //            LV58_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv59Exp"))
        //        {
        //            LV59_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv60Exp"))
        //        {
        //            LV60_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv61Exp"))
        //        {
        //            LV61_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv62Exp"))
        //        {
        //            LV62_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv63Exp"))
        //        {
        //            LV63_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv64Exp"))
        //        {
        //            LV64_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv65Exp"))
        //        {
        //            LV65_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv66Exp"))
        //        {
        //            LV66_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv67Exp"))
        //        {
        //            LV67_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv68Exp"))
        //        {
        //            LV68_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv69Exp"))
        //        {
        //            LV69_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv70Exp"))
        //        {
        //            LV70_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv71Exp"))
        //        {
        //            LV71_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv72Exp"))
        //        {
        //            LV72_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv73Exp"))
        //        {
        //            LV73_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv74Exp"))
        //        {
        //            LV74_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv75Exp"))
        //        {
        //            LV75_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv76Exp"))
        //        {
        //            LV76_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv77Exp"))
        //        {
        //            LV77_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv78Exp"))
        //        {
        //            LV78_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv79Exp"))
        //        {
        //            LV79_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv80Exp"))
        //        {
        //            LV80_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv81Exp"))
        //        {
        //            LV81_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv82Exp"))
        //        {
        //            LV82_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv83Exp"))
        //        {
        //            LV83_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv84Exp"))
        //        {
        //            LV84_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv85Exp"))
        //        {
        //            LV85_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv86Exp"))
        //        {
        //            LV86_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv87Exp"))
        //        {
        //            LV87_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv88Exp"))
        //        {
        //            LV88_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv89Exp"))
        //        {
        //            LV89_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv90Exp"))
        //        {
        //            LV90_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv91Exp"))
        //        {
        //            LV91_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv92Exp"))
        //        {
        //            LV92_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv93Exp"))
        //        {
        //            LV93_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv94Exp"))
        //        {
        //            LV94_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv95Exp"))
        //        {
        //            LV95_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv96Exp"))
        //        {
        //            LV96_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv97Exp"))
        //        {
        //            LV97_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv98Exp"))
        //        {
        //            LV98_EXP = Integer.parseInt(pValue);
        //        }
        //        else if (pName.equalsIgnoreCase("Lv99Exp"))
        //        {
        //            LV99_EXP = Integer.parseInt(pValue);
        //        }
        //        else
        //        {
        //            return false;
        //        }
        //        return true;
        //    }

        //    private Config()
        //    {
        //    }
        //}

    }
}